package com.ruoyi.association.service;

import java.util.List;
import com.ruoyi.association.domain.SysAssociation;
import com.ruoyi.association.domain.SysAssociationMember;

/**
 * 协会Service接口
 * 
 * @author ruoyi
 * @date 2025-01-27
 */
public interface ISysAssociationService 
{
    /**
     * 查询协会
     * 
     * @param associationId 协会主键
     * @return 协会
     */
    public SysAssociation selectSysAssociationByAssociationId(Long associationId);

    /**
     * 查询协会列表
     * 
     * @param sysAssociation 协会
     * @return 协会集合
     */
    public List<SysAssociation> selectSysAssociationList(SysAssociation sysAssociation);

    /**
     * 新增协会
     * 
     * @param sysAssociation 协会
     * @return 结果
     */
    public int insertSysAssociation(SysAssociation sysAssociation);

    /**
     * 修改协会
     * 
     * @param sysAssociation 协会
     * @return 结果
     */
    public int updateSysAssociation(SysAssociation sysAssociation);

    /**
     * 批量删除协会
     * 
     * @param associationIds 需要删除的协会主键集合
     * @return 结果
     */
    public int deleteSysAssociationByAssociationIds(Long[] associationIds);

    /**
     * 删除协会信息
     * 
     * @param associationId 协会主键
     * @return 结果
     */
    public int deleteSysAssociationByAssociationId(Long associationId);

    /**
     * 校验协会编码是否唯一
     * 
     * @param sysAssociation 协会信息
     * @return 结果
     */
    public String checkAssociationCodeUnique(SysAssociation sysAssociation);

    /**
     * 根据协会ID查询关联会员列表
     * 
     * @param associationId 协会ID
     * @return 会员列表
     */
    public List<SysAssociationMember> selectMembersByAssociationId(Long associationId);

    /**
     * 根据会员ID查询关联协会列表
     * 
     * @param membersId 会员ID
     * @return 协会列表
     */
    public List<SysAssociationMember> selectAssociationsByMembersId(Long membersId);

    /**
     * 添加会员到协会
     * 
     * @param sysAssociationMember 协会会员关联
     * @return 结果
     */
    public int addMemberToAssociation(SysAssociationMember sysAssociationMember);

    /**
     * 从协会移除会员
     * 
     * @param id 关联ID
     * @return 结果
     */
    public int removeMemberFromAssociation(Long id);

    /**
     * 更新协会会员数量
     * 
     * @param associationId 协会ID
     * @return 结果
     */
    public int updateMemberCount(Long associationId);
}
